home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 2 / United Public Domain Gold 2.iso / music_utilities / pt040.dms / pt040.adf / Docs / Synthsounds.doc < prev    next >
Text File  |  1991-08-11  |  21KB  |  701 lines

  1.          THE SYNTHETIC SOUND EDITOR
  2.         *==========================*
  3.  
  4.  
  5. This  is the editor, which is used to design simple pieces of waveforms and
  6. to  "program"  the  volume  and pitch altering sequences.  Synthetic sounds
  7. don't  take  much memory (that's the main advantage of them).  They can use
  8. the  whole  5-octave  range.   Although they are quite simple, they usually
  9. sound quite "cool" (and remind me of the good old C-64).
  10.  
  11. Getting started
  12. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  13. First  load  OctaMED,  select  the  Instr-panel,  click the Synth-gadget to
  14. initialize a new synthsound.  Then click the Synth-display selection gadget
  15. to  display  the synthsound editor.  Please turn editing off.  You can play
  16. the current sound with keyboard, like ordinary samples.
  17.  
  18. Waveform editing
  19. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  20. There  are  two  waveform  displays,  the  left one is the "master waveform
  21. display" and the right one is for intermediate editing (it also serves as a
  22. copy  buffer).   Between  the  waveform displays are some gadgets, that are
  23. used for transferring waveforms between displays.
  24.  
  25. First  there  are two copy gadgets.  If you press the left copy gadget, the
  26. right waveform will be copied to the left one (and vice versa).  Gadget "<-
  27. EXCHANGE ->" exchanges the waveforms on the left and right.  "<- MIX" mixes
  28. the left waveform to the right waveform.  It is a powerful tool that can be
  29. needed  quite often.  "<-ADD" is similar to the mix, but it doesn't produce
  30. any  average between the wforms (= waveforms, from now on).  The wforms are
  31. simply  added together.  It's possible, that the waveforms exceed the upper
  32. and  lower  limits  (in  that  case,  they  are  truncated).  Two "<- EDIT"
  33. "EDIT->"  gadgets  allow  you to select either of the displayed wforms as a
  34. current  waveform, which is then used in some editing functions.  Sometimes
  35. they're  automatically  set  (when  you  draw  the  wform  with  mouse, for
  36. example).   "UNDO"  undoes  your  last  editing operation.  It can be quite
  37. useful.   "RANGE  ALL"  selects  the  current  wform,  so  that any editing
  38. operations affect the whole wform.
  39.  
  40. Freehand drawing
  41. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  42. A  very  simple way to create wforms is to draw them from scratch.  This is
  43. easily  done.   Just press the left mouse button and draw...  There are two
  44. drawing  modes.  The default is "pixel".  The other is "line".  This can be
  45. used  for  drawing  straight lines.  There's also a mix-mode, that works in
  46. both  "line"  and  "pixel" -mode.  It mixes the drawed pixels or lines with
  47. the already existing data.  Mode-selection gadgets are located below "RANGE
  48. ALL".
  49.  
  50. Waveform length
  51. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  52. Each  waveform  in  synthsound  can be 2 - 128 bytes long (it must be even,
  53. though).   The  shorter the waveform, the higher the pitch (it also depends
  54. on  the  wform itself).  Usually, to make the pitches compatible with other
  55. instruments,  you should use length 2, 4, 8, 16, 32, 64 or 128.  The length
  56. can be changed with "LEN:" gadgets below the left wform, by typing in a new
  57. value or by clicking the single-step gadgets.
  58.  
  59. Multiple waveforms
  60. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  61. Each synthsound can consist of more than one wform (the maximum is actually
  62. 64). On the left, below the left wform, there's a set of gadgets:
  63.  
  64. curr. wform #
  65.    |
  66.    0  < > / 00
  67.       |/    \|
  68. next/prev    number of the last waveform
  69.  
  70. The arrow gadgets select the next/previous waveform. As this is a operation
  71. that is needed often, there are keyboard shortcuts:
  72.     Alt-cursor left  = previous
  73.     Alt-cursor right = next
  74.  
  75. There are two Add gadgets that allow you to increase the number of waveforms.
  76. "Last" adds a new waveform after the last wform.
  77. "Here" inserts a new wform here, and shifts the others.
  78.  
  79. Del gadgets:
  80. "Last" deletes the last wform.
  81. "Here" deletes the current wform.
  82.  
  83. Preset waveforms
  84. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  85. There  are some simple, often needed preset waveforms available at a single
  86. click.   First  make  sure, that the destination wform is the current wform
  87. (selected  with  the  EDIT  <-/->  gadgets).   Then  just  click the preset
  88. waveform icon.  The icons are located at the bottom of the editor.
  89.  
  90. The available waveforms are: sine, saw up/down, pulse, random and triangle.
  91. The CLR-gadget clears the current wform.
  92. The ALL-gadget clears the whole synthsound (so be careful..)
  93.  
  94. Range operations
  95. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  96. These  are  some  basic  operations, that are applied to the selected range
  97. (highlighted  white).   You can select the range by dragging the mouse over
  98. the wform with the right mouse button down.  You can select the whole wform
  99. by  clicking  "RANGE  ALL".  The Range start/Range end gadgets at the lower
  100. right corner of the synthsound editor can be used to make small corrections
  101. to the area.
  102.  
  103. When  there's  no  range  selected, there's a single horizontal white line.
  104. This  is the cursor.  Some editing operations need it.  The cursor position
  105. can be set by clicking the right mouse button on the wform area.  There are
  106. also  three  narrow  gadgets  (on the left of the preset wform gadgets) for
  107. positioning the cursor:
  108.  
  109. cursor to     cursor to end
  110. start   |     |
  111.     <  +  >
  112.            |
  113.       cursor to the middle (of the wform)
  114.  
  115. On the middle of the screen, there's a word "RNG", followed by a strip of
  116. gadgets:
  117.     RNG  Cut  Copy  Paste  Clr  Dbl  Rev  <  >
  118.  
  119. Cut    (works only on left wform). It "cuts" the selected area, which is then
  120.     moved to the right wform display.
  121. Copy    copies the selected range to the right wform, but doesn't cut it away.
  122. Paste    copies the contents of the right wform to the position pointed by
  123.     the cursor.
  124. Clr    clears the range.
  125. Dbl    "doubles" the range, making it play one octave higher.
  126. Rev    reverses the range.
  127. < or >    shift the ranged data to left or right.
  128.  
  129. There are two other editing operations: stretch and volume change.
  130.  
  131. Stretch allows you to stretch a point of the wform towards some other point
  132. (understand?? no?? then try this:)
  133. For example, select a sine wave.  Then position the cursor on the middle of
  134. the  waveform (there's a gadget for this purpose, see above).  Now activate
  135. the  "STRETCH:"-gadget  (on  the  left  lower corner of the synthsound ed).
  136. Type  in the amount of moving, e.g.  32.  This should demonstrate it...  If
  137. the number you type in is negative, the point is stretched to left.
  138.  
  139. Volume change allows you to increase/decrease the volume of selected range:
  140. First  select  a range.  Then activate the "VOL.CHG:"-gadget.  Now you must
  141. enter  the  amount  of  volume  change (in %'s).  For example, to halve the
  142. volume,  you  should  type 50.  If you want to double the volume, type 200.
  143. The volume will be changed when you press Return.
  144.  
  145. Transformation
  146. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  147. This  is  quite  a powerful feature.  It allows you to change a waveform to
  148. another  smoothly (by creating the waveforms between them).  Demonstration:
  149. Allocate 9 new waveforms (click Add/Last 9 times).  Now you have 10 wforms.
  150. Move  to  wform  00,  and select a pulse waveform, for example.  Then click
  151. Transform:   Start  to mark the beginning of transformation range.  Move to
  152. wform 09 (the last one).  Put here a sine wform.  Click Transform:  Do, and
  153. the  magic  is  done.   If  you view the wforms 01 - 08, you'll notice that
  154. there's  now  a  smooth  transition  from  the pulse wave to the sine wave.
  155. -----------------------------------------------------------------------------
  156.  
  157. THE PROGRAMMING LANGUAGE
  158. ========================
  159.  
  160. Note: please read this section carefully before experimenting, because you
  161.       can lock up your machine with the synthsound programming language (as
  162.       with any other language)
  163.  
  164. The  programming language is used for controlling the volume/pitch/vibrato/
  165. waveforms/arpeggio/etc...    of  the  synthsound.   It  consist  of  simple
  166. keywords, of which some have an argument.
  167.  
  168. The  programming  is done using two lists of commands/numbers.  These lists
  169. are  displayed  through  a  small  window below the right waveform display.
  170. First  there  are  line  numbers in decimal and hex (two leftmost columns).
  171. The  middle column contains the volume sequence, while the rightmost is the
  172. waveform/pitch sequence.
  173.  
  174.        volume ctrl seq
  175.           |
  176. line      |    waveform ctrl seq
  177.   |       |    |
  178.   00 00   40   00
  179.   01 01  END  END
  180.  
  181. These  lists  are  both  max.   127 ($7F) entries long.  The list is always
  182. terminated  with  "END"  instruction (it's automatically there so you don't
  183. have  to do that).  You can scroll the list with cursor up/down -keys.  The
  184. cursor  can be moved horizontally using the cursor left/right -keys.  There
  185. are  six  possible  cursor  locations  (3  for  both lists).  When entering
  186. commands,  the  cursor  should  be  on  the leftmost position of that list.
  187. Values  are entered by pointing the cursor over the value to be changed and
  188. entering a new value.  Commands and numbers are entered with keyboard.  You
  189. can   insert   entries  to  the  list  with  the  Return-key  (or  clicking
  190. Ins-gadget),  and  delete using Del (or clicking Del-gadget).  JMP commands
  191. are renumbered when entries are inserted or deleted.
  192.  
  193. ALL NUMBERS IN THE SEQUENCE LISTS ARE HEXADECIMAL.
  194. Just remember this, and you have no problems (fingers crossed :^)
  195.  
  196. First, let's examine some example sequences:
  197.  
  198. This is a volume sequence:
  199.     
  200.     00  40 <= set initial volume to 64 (hex $40, did you already forget?)
  201.     01 CHD <= command, that means "Set volume change down speed"
  202.     02  03 <= argument (speed = 3)
  203.     03 END
  204.  
  205. Here's another:
  206.  
  207.     00  00 <= initial volume = 0
  208.     01 CHU <= Command: Set volume change up
  209.     02  07 <= speed = 7
  210.     03 WAI <= Command: Wait
  211.     04  10 <= wait 10 pulses
  212.     05 CHU <= Set volume change up
  213.     06  00 <= speed = 0 -> stop changing volume
  214.     07 WAI <= Wait
  215.     08  70 <= 70 pulses
  216.     09 CHD <= Cmd: Set volume change down
  217.     0A  01 <= speed = 1 (slow)
  218.     0B END
  219.  
  220. Third:
  221.  
  222.     00  40 <= vol = $40
  223.         01  30 <= vol = $30 (without command, the values are volume changes)
  224.     02  20 <= vol = $20
  225.     03 END
  226.  
  227. And fourth, finally:
  228.  
  229.     00  40    <= vol = $40
  230.     01 CHD <+ <= change down speed..
  231.     02  01  | <= ..= 1
  232.     03 WAI  | <= Wait..
  233.     04  20  | <= ..20
  234.     05 CHU  | <= change up
  235.     06  01  | <= ..1
  236.     07 WAI  | <= Wait..
  237.     08  20  | <= ..20 again
  238.     09 JMP  | <= Jump (= goto)
  239.     0A  01 -+ <= to line number 01
  240.     0B END
  241.  
  242. Now some wform/pitch sequences. Wform/pitch sequence is the "mastersequence"
  243. while the volume sequence is a kind of "slave sequence".
  244.  
  245. First: (the simplest case)
  246.     00  00 <= set waveform #00
  247.     01 END
  248.  
  249. A bit more complex:
  250.     00 VBS <= set vibrato speed
  251.     01  40 <= speed = $40
  252.     02 VBD <= set vibrato depth
  253.     03  02 <= depth = 2
  254.     04  00 <= waveform #00
  255.     05 END
  256.  
  257. And very complex:
  258.     00 ARP <= start arpeggio sequence
  259.     01  00 \
  260.     02  03  arpeggio values 0, 3, 7 (minor chord)
  261.     03  07 /
  262.     04 ARE <= end arpeggio sequence
  263.     05 VBD <= vibrato depth
  264.     06  06 <= 6
  265.     07 VBS <= vibrato speed
  266.     08  40 <= $40
  267.     09  00 <= set waveform #0
  268.     0A  01 <= set waveforms 01 - 0A (one timing pulse/waveform)
  269.     0B  02    | |
  270.     0C  03   \   /
  271.     0D  04    \_/
  272.     0E  05
  273.     0F  06
  274.     10  07
  275.     11  08
  276.     12  09
  277.     13  0A and back to #01...
  278.     14  08
  279.     15  07
  280.     16  06
  281.     17  05
  282.     18  04
  283.     19  03
  284.     1A  02
  285.     1B  01
  286.     1C JMP <= jump
  287.     1D  09 <= to position 09 (restart waveform changing)
  288.     1E END
  289.  
  290. -----------------------------------------------------------------------------
  291. You can learn a lot by examining the example synthsounds and by
  292. experimenting.
  293.  
  294. Now, some reference...
  295.  
  296. About timing
  297. ¯¯¯¯¯¯¯¯¯¯¯¯
  298. For  both  sequence  lists, most of the commands are fetched, executed, and
  299. the next command is immediately fetched.  There are also some commands that
  300. wait  for  the  next  timing  pulse, this is important because the computer
  301. would  otherwise  send all its time executing the sequence lists (and would
  302. hang  up).   You  should  take  care that all loops contain a command, that
  303. waits  for  the  next timing pulse.  These commands are WAI (Wait), vol chg
  304. (plain  number  in  the  volume  list)  and  set  waveform (plain number in
  305. pitch/wform list).
  306.  
  307. For example, the following loops will hang up your computer:
  308.  
  309.     00 JMP        00  CHU <-+ command CHU doesn't wait
  310.     01  00        01   02   |
  311.         ...        02  JMP   |
  312.             03   00 --+
  313.  
  314. While the following would not:
  315.  
  316.     00  20        00  WAI
  317.     01 JMP        01   02
  318.     02  00        02  JMP
  319.             03   00
  320.  
  321. Execution speed
  322. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  323. The synthsound handling routine is called once every interrupt.  This means
  324. that  the  handling  is  usually  done  6  times/note  (can be changed with
  325. secondary  tempo, see main docs).  Both lists have an execution speed, that
  326. is  the  speed  of the operation.  When the speed is 1, the next command is
  327. fetched/pitch  changed  etc.   on  every interrupt.  If the speed was 2, it
  328. would  happen  every second interrupt (runs two times slower).  The initial
  329. execution  speed  can be set with the two speed gadgets.  During executing,
  330. the speed can be changed with command SPD.
  331.  
  332.  
  333. VOLUME SEQUENCE LIST COMMANDS
  334. =============================
  335.  
  336. 1.    Set volume
  337.     Command: ---
  338.     Keyboard: --- (key needed to enter the command)
  339.  
  340.     This is the default command (no command identifier). It sets the
  341.     absolute volume of the synthsound. It should be 00 - 40. Note that
  342.     the relative track volumes are not used in synthsounds (mostly
  343.     because of performance reasons).
  344.  
  345.     Example:
  346.     00  30 ;volume = $30
  347.     01  10 ;volume = $10
  348.     ...
  349.  
  350. 2.    End sequence
  351.     Command: END
  352.     Keyboard: ---
  353.  
  354.     This command terminates the volume sequence list. It's always there
  355.     and automatically inserted. You can't insert commands past this one.
  356.  
  357. 3.    Set volume change down speed
  358.     Command: CHD
  359.     Keyboard: D
  360.  
  361.     This command sets the speed, in which volume is decreased each timing
  362.     pulse. The volume starts changing automatically after this command.
  363.     To stop automatic volume sliding, issue this command with speed 00.
  364.  
  365.     Example:
  366.     00  CHD
  367.     01   05 ;speed = 5
  368.     ...
  369.     10  CHD
  370.     11   00 ;speed = 0 -> stop sliding
  371.  
  372. 4.    Set volume change up speed
  373.     Command: CHU
  374.     Keyboard: U
  375.  
  376.     This command is like CHD, except it sets the volume change up.
  377.  
  378. 5.    Wait
  379.     Command: WAI
  380.     Keyboard: W
  381.  
  382.     This command waits for specified amount of timing pulses (pause).
  383.  
  384.     Example:
  385.     03  WAI
  386.     04   10 ;wait for 16 ($10) pulses to occur
  387.  
  388. 6.    Jump
  389.     Command: JMP
  390.     Keyboard: J
  391.  
  392.     Causes an immediate jump to another position of the volume list.
  393.  
  394.     Example:
  395.     05  JMP
  396.     06   0A ;jump forward to line 0A
  397.  
  398. 7.    Jump waveform sequence
  399.     Command: JWS
  400.     Keyboard: Shift-J
  401.  
  402.     This command causes a jump in the waveform sequence. This can be used
  403.     for example, to trigger a pitch change at the end of the vol seq
  404.     list. Note that this DOESN'T cause a jump TO waveform sequence.
  405.  
  406.     Example:
  407.     04  JWS
  408.     05   0F    ;Cause jump in waveform sequence list
  409.  
  410.  
  411. 8.    Halt
  412.     Command: HLT
  413.     Keyboard: H
  414.  
  415.     This has the same effect with command END (halt execution), but it
  416.     can be inserted in the middle of the sequence list.
  417.  
  418.     Example:
  419.     03  HLT
  420.     04   04 ;some other code (can be accessed with JMP instruction, for
  421.     ...     example)
  422.  
  423. 9.    Set speed
  424.     Command: SPD
  425.     Keyboard: S
  426.  
  427.     Sets the execution speed.
  428.  
  429.     Example:
  430.     0A  SPD
  431.     0B   01 ;speed = 1 (fastest)
  432.     ...
  433.  
  434. (The following commands require OctaMED V2.00 (MED V3.20) or later.)
  435.  
  436. 10.    One-shot envelope
  437.     Command: EN1
  438.     Keyboard: E
  439.  
  440.     This command allows you to draw the shape of the envelope with the
  441.     mouse. When the end of the envelope is reached, nothing occurs.
  442.     02   40
  443.     03  EN1
  444.     04   05
  445.     Waveform 05 is used as an envelope. Note that the envelope execution
  446.     starts on next interrupt, so the volume is initialized to $40.
  447.     The envelope waveform must always be 128 bytes long!!
  448.  
  449. 11.    Looping envelope
  450.     Command: EN2
  451.     Keyboard: Shift-E
  452.  
  453.     This works like command EN1, except that when the end is reached,
  454.     execution will start again from the beginning.
  455.  
  456.  
  457. WAVEFORM/PITCH SEQUENCE LIST COMMANDS
  458. =====================================
  459.  
  460. 1.    Set waveform
  461.     Command: ---
  462.     Keyboard: ---
  463.  
  464.     This command is used to indicate the waveform number (starting from
  465.     00). After this instruction, the execution stops until next timing
  466.     pulse occurs. Don't use waveform numbers that are higher than the
  467.     actual number of the last wform.
  468.  
  469.     Example:
  470.     00  00 ;wform 00
  471.     01  01 ;wform 01
  472.     ...
  473.  
  474. 2.    End sequence
  475.     Command: END
  476.     Keyboard: ---
  477.  
  478.     This command terminates the wform/pitch sequence list. It's always
  479.     there and automatically inserted. You can't insert commands past this
  480.     one.
  481.  
  482. 3.    Set pitch change down speed
  483.     Command: CHD
  484.     Keyboard: D
  485.  
  486.     This command sets the sliding speed for sliding pitch down. The
  487.     sliding automatically starts after this command and stops, when
  488.     speed is set to zero.
  489.  
  490.     Example:
  491.     00 CHD
  492.     01  03 ;set speed to 3
  493.     ...
  494.  
  495. 4.    Set pitch change up speed
  496.     Command: CHU
  497.     Keyboard: U
  498.  
  499.     Just like previous, but slides pitch up.
  500.  
  501. 5.    Wait
  502.     Command: WAI
  503.     Keyboard: W
  504.  
  505.     This command waits for specified amount of timing pulses (pause).
  506.  
  507.     Example:
  508.     03  WAI
  509.     04   02 ;wait for 2 pulses to occur
  510.  
  511. 6.    Jump
  512.     Command: JMP
  513.     Keyboard: J
  514.  
  515.     Causes an immediate jump to another position of the wform/pitch list.
  516.  
  517.     Example:
  518.     05  JMP
  519.     06   0A ;jump forward to line 0A
  520.  
  521. 7.    Jump volume sequence
  522.     Command: JVS
  523.     Keyboard: Shift-J
  524.  
  525.     This command causes a jump to happen in the volume sequence. Can be
  526.     used e.g. for triggering volume changes after some wform event.
  527.  
  528.     Example:
  529.     09  JVS
  530.     0A   00 ;start volume sequence from the beginning
  531.  
  532. 8.    Halt
  533.     Command: HLT
  534.     Keyboard: H
  535.  
  536.     This has the same effect with command END (halt execution), but it
  537.     can be inserted in the middle of the sequence list.
  538.  
  539.     Example:
  540.     03  HLT
  541.     04   04 ;some other code (can be accessed with JMP instruction, for
  542.     ...     example)
  543.  
  544. 9.    Set speed
  545.     Command: SPD
  546.     Keyboard: S
  547.  
  548.     Sets the execution speed.
  549.  
  550.     Example:
  551.     0A  SPD
  552.     0B   01 ;speed = 1 (fastest)
  553.     ...
  554.  
  555. 10.    Begin arpeggio definition
  556.     Command: ARP
  557.     Keyboard: A
  558.  
  559.     This command starts the arpeggio sequence. The following values are
  560.     the arpeggio offsets from the base note. The arpeggio sequence
  561.     is terminated with ARE-command. The arpeggio starts automatically
  562.     after the sequence is defined.
  563.  
  564.     Example:
  565.     03  ARP ;start arpeggio
  566.     04   00 ;offset values
  567.     05   04
  568.     06   07
  569.     07   0A
  570.     08  ARE ;end arpeggio definition
  571.  
  572. 11.    End arpeggio definition
  573.     Command: ARE
  574.     Keyboard: E
  575.  
  576.     Ends an arpeggio definition. See above.
  577.  
  578. 12.    Set vibrato depth
  579.     Command: VBD
  580.     Keyboard: V
  581.  
  582.     This command is used to set the vibrato depth (00 - 7F).
  583.  
  584.     Example:
  585.     02  VBD
  586.     03   04 ;set depth to 4
  587.  
  588. 13.    Set vibrato speed
  589.     Command: VBS
  590.     Keyboard: Shift-V
  591.  
  592.     This command sets the vibrato speed (00 - 7F). Both speed and depth
  593.     must be nonzero for vibrato to occur.
  594.  
  595.     Example:
  596.     02  VBD
  597.     03   04 ;depth = 4
  598.     04  VBS
  599.     05   30 ;speed = 30
  600.  
  601. 14.    Reset pitch
  602.     Command: RES
  603.     Keyboard: R
  604.  
  605.     This command resets the pitch of the note to its initial pitch.
  606.  
  607. (The following command requires OctaMED V2.00 (MED V3.20) or later.)
  608.  
  609. 15.    Set vibrato waveform
  610.     Command: VWF
  611.     Keyboard: Shift-W
  612.  
  613.     Sets the vibrato waveform. The argument is the number of wform.
  614.     The waveform should always be 32 bytes long!! Note that it's
  615.     actually played reversed (use the Rev gadget to reverse it).
  616.     By default, sine wave is used.
  617.  
  618.     Example:
  619.     00  VBD
  620.     01   06
  621.     02  VBS
  622.     03   40
  623.     04  VWF
  624.     05   04 ;use wform number 04 as vibrato waveform
  625.  
  626. =============================================================================
  627.  
  628. Synthsound handling commands in the songs:
  629.  
  630. Command  E  in the songs controls the MIDI pan, if used with MIDI, but with
  631. synthsounds, it is used to trigger a jump in the wform/pitch sequence list.
  632.  
  633. For  example,  if  you  wanted  to  decrease the pitch of the sound after a
  634. certain point, your wform/pitch sequence could look like this:
  635.  
  636.     00  VBS
  637.     01   40
  638.     02  VBD
  639.     03   06
  640.     04   00    ;play wform 00
  641.     05  HLT
  642.     06  CHD    ;pitch changing entry point
  643.     07   02
  644.     08  END
  645.  
  646. Now you could compose a track like this:
  647.  
  648.     C-2 3000  ;this is the previous synthsound
  649.     --- 0000
  650.     --- 0000
  651.     --- 0E06  ;cause a jump to position 06 (pitch starts to slide down)
  652.     --- 0000
  653.     ...
  654.  
  655. With command JVS, you could make the command affect volume sequence too.
  656.  
  657. Hold/Decay:
  658. ===========
  659. Hold/Decay  work well with synthsounds too.  The decay value in synthsounds
  660. is,  however,  a  jump address in the volume sequence list.  When the decay
  661. should  start,  the  execution will jump to this entry in the vol seq list.
  662. This means that you can handle the decay on any way you want.  You can also
  663. make it affect the pitch/wforms using the command JWS.
  664.  
  665. Example volume sequence list:
  666.  
  667.     00  40    ;volume
  668.     01 HLT  ;end
  669.     02 CHD    ;decay handling (entry point) -> cause decay
  670.     03  03
  671.     04 END
  672.  
  673. The decay value for this synthsound should be 2. When you save/load
  674. synthsounds, the decay values are saved/loaded with the instrument.
  675.  
  676. =============================================================================
  677.  
  678. Saving/loading synthsounds
  679. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  680. Synthsounds  are  saved  using the filerequester panel, "save instr".  They
  681. usually  take  very little disk space.  Synthsounds can be loaded just like
  682. normal samples (filerequester, sample list, typing sample name).
  683.  
  684. =============================================================================
  685.  
  686. HYBRID SOUNDS
  687. ¯¯¯¯¯¯¯¯¯¯¯¯¯
  688. Hybrid  sounds are much like synthsounds, except that there are no waveform
  689. pieces.   Instead, there's a normal sample.  All commands of the synthsound
  690. handling programming language can be used with hybrid sounds.  There's only
  691. one thing you should know:  Don't use "Set waveform".  Because there's only
  692. a single waveform, there's no need for that (and it wouldn't work anyway).
  693.  
  694. =============================================================================
  695.  
  696.     Final note:
  697.  
  698. Don't  be afraid if you didn't understand everything described in this file
  699. (I  hardly  understand  it myself ;-) All this information is not necessary
  700. for using the synthsounds (only for designing them).
  701.